/**
 * 需求：实现一个名为add的post接口，并传入name和skinname，
 * 把数据保存到data.json文件中。
 * 
 * */ 
const http = require('http');
const fs = require('fs');

const server = http.createServer((req,res)=>{
    if(req.method === 'POST' && req.url === '/add'){
        // 符合条件 接收数据
        // post 接口接收数据不是通过req.url进行接收
        // nodejs有专门的方法来接收post接口数据
        // 这个方法就是通过req.on来监听data和end事件
        // data事件 用于接收数据 --- 注意：这里接收数据不一定是一次性全部接收，
        // 数据量大的时候是分批接收的，数据量小的时候，就一次性接收完成，因此
        // data事件有可能触发一次也有可能触发多次
        // end事件 用于判断数据是否接收完成 只要触发了end事件即可说明数据接收完成，这个事件只触发一次
        let result = ""
        req.on('data',(chunk)=>{
            // chunk 就是接收到的数据
            result+=chunk
        })
        req.on('end',()=>{
            console.log('数据接收完成：', result);
            // 解析接收到的数据
            let body = new URLSearchParams(result)
            // 获取data.json文件中的数据
            let arr = fs.readFileSync('./data/data.json','utf-8')
            arr = JSON.parse(arr)
            // 把前端传入的数据 保存到数组中
            arr.push({
                name: body.get('name'),
                skinname: body.get('skinname')
            })
            // 把数据重新写入到data.json文件中
            fs.writeFileSync('./data/data.json',JSON.stringify(arr))
            res.end('新增英雄成功！')
        })

    }else{
        // 不符合条件
        res.statusCode = 404
        res.end('not found');
    }
})

server.listen(8002, ()=>{
    console.log('服务器启动成功：http://localhost:8001');
})